/**
 * 用户管理
 */
var queryUsersSearch = function() {
	var queryUsersFieldSet = new Ext.form.FieldSet({
				id : 'queryUsersFieldSet',
				title : '查询条件',
				collapsible : true,// 可折叠
				buttonAlign : 'center',
				keys : [{
							key : 13, // 13代表回车
							fn : queryUsers,
							scope : this
						}],
				items : [{
					layout : 'column',
					border : false,
					items : [{
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											xtype : 'textfield',
											id : 'userName',
											anchor : '100%',
											fieldLabel : '用户姓名',
											name : "userName"
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											xtype : 'numberfield',
											anchor : '100%',
											fieldLabel : '客户手机号',
											name : "mobileNo",
											allowDecimals : false,// 禁用小数
											allowNegative : false,// 禁用负数
											maxLength : 20
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
									xtype : 'localcommonbox',
									anchor : '100%',
									fieldLabel : '客户状态',
									hiddenName : 'status',
									loaclarr : [['0', '可用'], ['1', '禁用'],
											['', '全部']]
								}]

							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											xtype : 'dataDictionaryCmb',
											anchor : '100%',
											fieldLabel : '用户类型',
											hiddenName : "userType",
											editable : false,
											autoLoad : false,
											existall : true,
											defaultFirstRow : 1,
											dictionaryType : PmsUtil.user_type
										}]
							}]
				}, {
					// 第二行
					layout : 'column',
					border : false,
					items : [{
						columnWidth : .25,
						layout : 'form',
						border : false,
						items : [{
							xtype : "datetimefield",
							id : "userStartDate",
							name : "userStartDate",
							fieldLabel : "创建开始日期",
							width : 175,
							editable : true,
							format : "Y-m-d H:i:s",
							listeners : {
								'select' : function() {
									Ext.getCmp('userEndDate').setMinValue(this
											.getValue());
								}
							}
						}]
					}, {
						columnWidth : .25,
						layout : 'form',
						border : false,
						items : [{
							id : "userEndDate",
							xtype : "datetimefield",
							name : "userEndDate",
							fieldLabel : "创建结束日期",
							width : 175,
							editable : true,
							format : "Y-m-d H:i:s",
							listeners : {
								'select' : function() {
									Ext.getCmp('userStartDate')
											.setMaxValue(this.getValue());
								}
							}
						}]
					}, {
						columnWidth : .25,
						layout : 'form',
						border : false,
						items : [{
							layout : 'column',
							border : false,
							items : [{
										text : '查询',
										xtype : 'button',
										width : 80,
										handler : function() {
											queryUsers();
										},
										style : {
											marginLeft : "100px",
											marginRight : "10px"
										}
									}, {
										text : '重置',
										xtype : 'button',
										width : 80,
										handler : function() {
											Ext.getCmp('queryUserForm')
													.getForm().reset();
											// 对日期的初始设置
											Ext.getCmp('userStartDate')
													.setMaxValue(new Date());
											Ext.getCmp('userEndDate')
													.setMinValue("");
										}
									}]
						}]
					}]

				}]
			});
	fieldSetListeners(
			['queryUsersFieldSet', 'queryUserForm', 'userManagerGrid'], [0.16,
					0.84]);
	var queryUserForm = new Ext.form.FormPanel({
				id : 'queryUserForm',
				anchor : '100% 16%',
				frame : true,
				labelAlign : 'right',
				bodyBorder : false,
				items : [queryUsersFieldSet]
			});
	return queryUserForm;
};

/**
 * grids
 */
var userManagerGrid = function() {
	var userManagerSm = new Ext.grid.CheckboxSelectionModel();// 创建选择模式对象
	// 定义表的每列（对应表头信息）
	var userManagerCm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
				dataIndex : "id",
				header : "用户编号",
				sortable : true,
				width : 70
			}, {
				dataIndex : "userName",
				header : "用户姓名",
				sortable : true,
				width : 100
			}, {
				dataIndex : "mobileNo",
				header : "手机号",
				sortable : true,
				width : 100
			}, {
				dataIndex : "headPic",
				header : "用户头像",
				sortable : true,
				width : 100,
				renderer : function(value) {
					return PmsUtil.ShowPicture(value);

				}
			}, {
				dataIndex : "userType",
				header : "用户类型",
				sortable : true,
				width : 70,
				renderer : function(value) {
					return PmsUtil.UserType(value);
				}
			}, {
				dataIndex : "email",
				header : "邮箱",
				sortable : true,
				width : 80,
				renderer : function(value, meta, record) {
					if (value) {
						meta.attr = 'ext:qtitle="邮箱:" ext:qtip="' + value + '"';
						return value;
					}
				}
			}, {
				dataIndex : "sex",
				header : "性别",
				sortable : true,
				width : 50,
				renderer : function(value) {
					return PmsUtil.UserSex(value);
				}
			}, {
				dataIndex : "birthday",
				header : "出生日期",
				sortable : true,
				width : 100,
				renderer : function(date) {
					return Ext.util.Format.substr(date, 0, 10);
				}
			}, {
				dataIndex : "status",
				header : "状态",
				sortable : true,
				width : 60,
				renderer : function(value) {
					PmsUtil.UserStatus(value);
					var value = '<div style="color:red;">'
							+ PmsUtil.UserStatus(value);
					+'</div>';
					return value;
				}
			}, {
				dataIndex : "createdName",
				header : "创建人",
				sortable : true,
				width : 80
			}, {
				dataIndex : "createdDate",
				header : "创建时间",
				sortable : true,
				width : 130
			}, {
				dataIndex : "updatedName",
				header : "修改人",
				sortable : true,
				width : 80
			}, {
				dataIndex : "updatedDate",
				header : "修改时间",
				sortable : true,
				width : 130
			}, {
				header : "管理",
				width : 250,
				dataIndex : "id",
				sortable : false,
				renderer : function(j, i, g, m, h) {
					var l = g.data.id;
					var userStatus = g.data.status;
					var mobileNo = g.data.mobileNo;
					var k = "";
					if (isGranted("userManager_编辑用户")) {
						if (userStatus == 0) {
							k += '&nbsp;&nbsp;<a href="#" onclick="updateUser('
									+ l + ');" >编辑</a>';
						}
					}
					if (isGranted("userManager_禁用用户")) {
						if (userStatus == 0) {
							k += '&nbsp;&nbsp;<a href="#" onclick="updUserStatus('
									+ l
									+ ','
									+ "1"
									+ ','
									+ "'禁用'"
									+ ')\" >禁用</a>';
						}
					}
					if (isGranted("userManager_启用用户")) {
						if (userStatus == 1) {
							k += '&nbsp;&nbsp;<a href="#" onclick="updUserStatus('
									+ l
									+ ','
									+ "0"
									+ ','
									+ "'启用'"
									+ ')\" >启用</a>';
						}
					}

					if (isGranted("userManager_地址管理")) {
						if (userStatus == 0) {
							k += '&nbsp;&nbsp;<a href="#" onclick="manageAddress('
									+ l + ', 0);" >地址管理</a>';
						}
					}

					if (isGranted("userManager_节日查询")) {
						if (userStatus == 0) {
							k += '&nbsp;&nbsp;<a href="#" onclick="queryFollowHoliday('
									+ l + ', 0);" >节日查询</a>';
						}
					}
					if (isGranted("userManager_优惠券管理")) {
						if (userStatus == 0) {
							k += '&nbsp;&nbsp;<a href="#" onclick="lookUserCouponDetail(\''
									+ mobileNo + '\');" >优惠券管理</a>';
						}
					}

					return k;
				}
			}]);

	// 定义分析器
	var userManagerReader = new Ext.data.JsonReader({
				totalProperty : "totalCount",
				root : "list",
				fields : [{
							name : "id"
						}, {
							name : "userName"
						}, {
							name : "mobileNo"
						}, {
							name : "headPic"
						}, {
							name : "email"
						}, {
							name : "sex"
						}, {
							name : "birthday"
						}, {
							name : "createdName"
						}, {
							name : "createdDate"
						}, {
							name : "updatedName"
						}, {
							name : "updatedDate"
						}, {
							name : "status"
						}, {
							name : "userStartDate"
						}, {
							name : "userEndDate"
						}, {
							name : "userType"
						}]
			});

	// 取数据store
	var userViewStore = new Ext.data.Store({
				autoLoad : true,// 要加载数据必须设置为true
				proxy : new Ext.data.HttpProxy({
							url : __ctxPath + "/userManager/selectAllUsers"
						}),
				remoteSort : false,
				baseParams : {
					start : 0,
					limit : 25
				},
				listeners : {
					beforeload : {
						fn : function(thiz, options) {
							Ext.apply(thiz.baseParams, Ext
											.getCmp('queryUserForm').getForm()
											.getValues());
						}
					}
				},
				reader : userManagerReader

			});

	// 定义grid的toolbar
	var userManagerTb = new Ext.Toolbar({
				id : "userManagerTb",
				height : 25,
				items : []
			});

	userManagerTb.add(new Ext.scm.Button({
				text : "添加用户",
				width : 80,
				iconCls : "btn-add",
				hsValue : 'userManager_添加用户',
				pressed : true,
				listeners : {
					"click" : function() {
						addUser();
					}
				}
			}));

	userManagerTb.add(new Ext.Toolbar.Spacer());
	userManagerTb.add(new Ext.scm.Button({
				text : "刷 新",
				iconCls : "btn-refresh",
				width : 80,
				hsValue : 'userManager_刷新',
				pressed : true,
				handler : function() {
					queryUsers();
				}
			}));

	var userManagerGrid = new Ext.grid.GridPanel({
				id : 'userManagerGrid',
				store : userViewStore,
				cm : userManagerCm,
				sm : userManagerSm,
				autoScroll : true,
				loadMask : true,
				stripeRows : true,
				columnLines : true,
				loadMask : {
					msg : "正在加载数据，请稍侯……"
				},
				viewConfig : {
					emptyText : '没有您想要的数据!'
				},
				anchor : '100% 84%',
				frame : true,
				tbar : userManagerTb,
				bbar : new PG.PagingBar({
							store : userViewStore
						})
			});
	return userManagerGrid;
};

// 查询
function queryUsers() {
	PmsUtil.StringTrim("userName");
	var grid = Ext.getCmp("userManagerGrid");
	var form = Ext.getCmp("queryUserForm");
	if (form.getForm().isValid()) {
		var gridStore = grid.getStore();
		gridStore.baseParams = Ext.apply(gridStore.baseParams, form.getForm()
						.getValues());
		gridStore.load();
	}
}

/**
 * 关心节日
 * 
 * @param {}
 *            userId
 */
function queryFollowHoliday(userId, status) {
	var centerPanel = App.getContentPanel();
	var tab = centerPanel.getItem(PmsUtil.USER_FOLLOW_HOLIDAY);
	var createNewTab = new CreatNewTab(PmsUtil.USER_FOLLOW_HOLIDAY, '节日查询');
	if (tab == null) {
		createNewTab.createNew(tab);
	} else {
		createNewTab.createOld(tab, ['followHolidayManagerGrid']);
	}
	Ext.Loader.load([__ctxPath + '/js/users/followHoliday.js'], function() {
				Ext.getCmp("centerTabPanel").getActiveTab()
						.add(followHolidayManagerGrid(userId, status));
				Ext.getCmp("centerTabPanel").getActiveTab().doLayout();
			});

}

// 地址管理
function manageAddress(userId, status) {
	var centerPanel = App.getContentPanel();
	var tab = centerPanel.getItem(PmsUtil.USER_ADDRESS_MANAGER);
	var createNewTab = new CreatNewTab(PmsUtil.USER_ADDRESS_MANAGER, '地址管理');
	if (tab == null) {
		createNewTab.createNew(tab);
	} else {
		createNewTab.createOld(tab, ['userAddressGrid']);
	}
	Ext.Loader.load([__ctxPath + '/js/users/userAddressManager.js'],
			function() {
				Ext.getCmp("centerTabPanel").getActiveTab()
						.add(userAddressGrid(userId, status));
				Ext.getCmp("centerTabPanel").getActiveTab().doLayout();
			});
}

// 添加用户
function addUser() {
	try {
		addOrUpdateUserWin(null, "添加用户").show();
	} catch (Error) {
		Ext.Loader.load([__ctxPath + '/js/users/userForm.js'], function() {
					addOrUpdateUserWin(null, "添加用户").show();
				});
	}

}

// 编辑用户
function updateUser(userId) {
	try {
		addOrUpdateUserWin(userId, "编辑用户").show();
	} catch (Error) {
		Ext.Loader.load([__ctxPath + '/js/users/userForm.js'], function() {
					addOrUpdateUserWin(userId, "编辑用户").show();
				});
	}

}

// 根据用户手机号查询优惠券
function lookUserCouponDetail(mobileNo) {
	var centerPanel = App.getContentPanel();
	var tab = centerPanel.getItem(PmsUtil.USER_COUPON_MANAGER);
	var createNewTab = new CreatNewTab(PmsUtil.USER_COUPON_MANAGER, '我的优惠券');
	if (tab == null) {
		createNewTab.createNew(tab);
	} else {
		createNewTab.createOld(tab, ['userCouponsGrid']);
	}
	Ext.Loader.load([__ctxPath + '/js/users/userCoupons.js'], function() {
				Ext.getCmp("centerTabPanel").getActiveTab()
						.add(userCouponsGrid(mobileNo));
				Ext.getCmp("centerTabPanel").getActiveTab().doLayout();
			});
}

/**
 * 用户禁用
 * 
 * @param {}
 *            userId
 */
function updUserStatus(userId, status, message) {
	Ext.Msg.confirm("信息确认", "是否" + message + "该用户?", function(btn) {
				if (btn == "yes") {
					var optionMask = new Ext.LoadMask(Ext.getBody(), {
								msg : "正在处理,请稍后..."
							});
					optionMask.show();
					Ext.Ajax.request({
								url : __ctxPath
										+ "/userManager/updUserStatusById",
								params : {
									userId : userId,
									status : status
								},
								method : "post",
								success : function(response) {
									optionMask.hide();
									var jsonData = Ext.util.JSON
											.decode(response.responseText);
									if (jsonData.success) {
										Ext.MessageBox.show({
													title : "信息提示",
													msg : jsonData.data,
													buttons : Ext.MessageBox.OK,
													icon : Ext.MessageBox.INFO
												});
										queryUsers();
									} else {
										Ext.MessageBox.show({
													title : "错误提示",
													msg : jsonData.data,
													buttons : Ext.MessageBox.OK,
													icon : Ext.MessageBox.ERROR
												});
									}
								},
								failure : function(response) {
									optionMask.hide();
									Ext.MessageBox.show({
												title : "操作信息",
												msg : "服务器请求异常,请稍后再试!",
												buttons : Ext.MessageBox.OK,
												icon : Ext.MessageBox.ERROR
											});
								}
							});
				}
			});
}

Ext.getCmp("centerTabPanel").getActiveTab().add(queryUsersSearch(),
		userManagerGrid());
Ext.getCmp("centerTabPanel").getActiveTab().doLayout();
